Ext.define('AppTableRsyncView', {
	extend : 'Ext.panel.Panel',
	id : 'AppTableRsyncView',
	title : '数据同步管理',
	region : 'center',
	layout : 'border',

	initComponent : function() {
		this.searchPanel = new KE.SearchPanel({
					region : 'north',
					items : [{
								text : '所属表名'
							}, {
								width : 120,
								xtype : 'textfield',
								name : 'Q_LIKES_table.name'
							}, {
								text : '数据来源表'
							}, {
								width : 120,
								xtype : 'textfield',
								name : 'Q_LIKES_rsyncTableName'
							}, {
								xtype : 'button',
								text : '查询',
								scope : this,
								iconCls : 'btn-search',
								handler : this.search
							}, {
								xtype : 'button',
								text : '清空',
								scope : this,
								iconCls : 'reset',
								handler : this.reset
							}]
				});
		this.topbar = new Ext.Toolbar({
					items : [{
								iconCls : 'btn-add',
								text : '增加同步',
								xtype : 'button',
								scope : this,
								handler : this.createRs
							}, '-', {
								iconCls : 'btn-ok',
								text : '同步已选表',
								xtype : 'button',
								scope : this,
								handler : this.runJobNow
							}]
				});
		this.gridPanel = new KE.GridPanel({
			region : 'center',
			tbar : this.topbar,
			id : 'AppTableRsyncGrid',
			rownumbercfg : {
				width : 30
			},
			sorters : [{
						property : 'sn',
						direction : 'ASC'
					}],
			url : __ctxPath + "/comm/listAppTableRsync.do",
			fields : ['oid', 'rsyncTableName', 'type', 'rsyncDate', 'sn',
					'cnt', 'state', 'total', {
						name : 'table.name',
						mapping : 'table.name'
					}],
			columns : [{
						header : 'ID',
						dataIndex : 'oid',
						hidden : true
					}, {
						header : '所属表',
						dataIndex : 'table.name'
					}, {
						header : '数据来源表',
						dataIndex : 'rsyncTableName',
						width : 150
					}, {
						header : '同步方式 ',
						dataIndex : 'type',
						width : 60,
						renderer : function(v) {
							if (v == 1)
								return '增量';
							if (v == 2)
								return '全量';
						}
					}, {
						header : '排序',
						dataIndex : 'sn',
						width : 50
					}, {
						header : '上次同步时间',
						dataIndex : 'rsyncDate'
					}, {
						header : '上次同步数量',
						dataIndex : 'cnt',
						width : 80
					}, {
						header : '总同步数量',
						dataIndex : 'total',
						width : 80
					}, {
						header : '是否启用',
						width : 60,
						dataIndex : 'state',
						renderer : function(v) {
							if (v == 0)
								return '<span class="bg-red">禁用</span>';
							if (v == 1)
								return '<span class="bg-green">启用</span>';
						}
					}, {
						text : '管理',
						xtype : 'actioncolumn',
						width : 80,
						items : [{

									iconCls : 'btn-ok',
									tooltip : '启用同步表',
									scope : this,
									handler : function(grid, rowIndex, colIndex) {
										var rec = grid.getStore()
												.getAt(rowIndex);

										this.reRsync(rec.data.oid);
									}
								},{
									iconCls : 'btn-cancel',
									tooltip : '禁用同步表',
									scope : this,
									handler : function(grid, rowIndex, colIndex) {
										var rec = grid.getStore()
												.getAt(rowIndex);
										this.reRsync1(rec.data.oid);
									}
								}, {
									iconCls : 'btn-edit',
									tooltip : '编辑',
									scope : this,
									handler : function(grid, rowIndex, colIndex) {
										var rec = grid.getStore()
												.getAt(rowIndex);
										this.editRs(rec);
									}
								}]
					}]
		});

		this.items = [this.searchPanel, this.gridPanel];
		this.callParent();
		this.gridPanel.on('rowdblclick', this.rowClick);
	},
	// 重置查询表单
	reset : function() {
		this.searchPanel.getForm().reset();
		Ext.each(this.searchPanel.query('combo'), function(c) {
					c.setValue('');
				});
	},
	// 按条件搜索
	search : function() {
		$search({
					searchPanel : this.searchPanel,
					gridPanel : this.gridPanel
				});
	},
	// GridPanel行点击处理事件
	rowClick : function(grid, rec) {
		new AppTableRsyncForm({
					sid : rec.data.oid
				}).show();
	},
	// 添加表
	createRs : function() {
		new AppTableRsyncForm().show();
	},
	// 启动同步表
	reRsync : function(id) {
		var ids = id;
		$postAjax({
					url : __ctxPath + '/comm/reRsyncAppTableRsync.do',
					params : {ids : ids},
					grid : this.gridPanel
				});

	},
	// 停用同步表
	reRsync1 : function(id) {
		var ids = id;
		$postAjax({
					url : __ctxPath + '/comm/reRsync1AppTableRsync.do',
					params : {ids : ids},
					grid : this.gridPanel
				});

	},
	// 把选中ID删除
	removeSelRs : function() {
		$delGridRs({
					url : __ctxPath + '/comm/multiDelAppTableRsync.do',
					grid : this.gridPanel,
					idName : 'oid'
				});
	},
	// 编辑Rs
	editRs : function(record) {
		new AppTableRsyncForm({
					sid : record.data.oid
				}).show();
	},
	// 立即执行任务
	runJobNow : function() {
		var me = this;
		var selRs = this.gridPanel.getSelectionModel().getSelection();
		if (selRs.length == 0) {
			Ext.ux.Toast.msg("操作信息", "请至少选择一条要操作的记录！");
			return;
		}
		var ids = [];
		for (var i = 0; i < selRs.length; i++) {
			if (selRs[i].data.state == 0) {
				Ext.ux.Toast.msg("操作信息", "请选择【启用】状态的记录！");
				return;
			}
			ids.push(selRs[i].data.oid);
		}
		Ext.Msg.confirm('信息确认', '您确认要立即执行所选的任务吗？', function(btn) {
					if (btn == 'yes') {
						$postAjax({
									url : __ctxPath
											+ '/comm/runNowAppTableRsync.do',
									params : {
										ids : ids
									},
									grid : me.gridPanel
								});
					}
				});
	}

});
